#ifndef PARAFLUIDSEGMENT_H
#define PARAFLUIDSEGMENT_H

#include "parafluidatom.h"
#include "parafluidvector.h"

#include <QList>

namespace ParaFluid
{
	/**
	* Segment from Point A to Point B
	*/
	class Segment
	{
		
	public:
		
		/**
		* Destructor
		*/
		~Segment();
		
		/**
		* Default Constructor
		*/
		Segment();
		
		/**
		* Constructor with Point A and B
		*/
		Segment(const Vector & pointA, const Vector & pointB);
		
		/**
		* Constructor with the previous and current position of an Atom
		*/
		Segment(const Atom & atom);
		
		/**
		* Copy Constructor
		*/
		Segment(const Segment & other);
		
		/**
		* Assignment Operator
		*/
		Segment & operator= (const Segment & rhs);
		
		/**
		* Return a list of Position inside every Voxel visited by this segment.
		* @param[in] smoothingDistance Voxel Size
		*/
		QList<Vector> visitedVoxels(float smoothingDistance);
		
		/**
		* Point A
		*/
		Vector pointA;
		
		/**
		* Point B
		*/
		Vector pointB;
		
	private:
		
	};
	
	
}

#endif
